💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    01 미니프로젝트 자기소개 생성기 | ✅ 저자: 이유정(박사)

    프로젝트 코드명: SELF_INTRO_GEN_PY_v1
    프로젝트 유형: 복습을 위한 미니 프로젝트

    코드명: SELF_INTRO_GEN_PY_v1
    자기소개 (Self Introduction) : SELF_INTRO
    Generator (생성기) 또는 Generation : GEN
    사용언어 Python: PY
    버전 번호 : v1
    

    🖥️ 프로젝트 개요

    본 프로젝트는 사용자의 이름, 나이, 취미 정보를 입력받아  
    포맷팅된 자기소개 카드를 콘솔에 출력하는 Python 기초 문법 종합 
    실습 과제입니다.
    

    이 프로젝트를 통해 다음 내용을 자연스럽게 적용합니다:

    • 입력/처리/출력의 흐름 제어
    • 변수 선언 및 네이밍 규칙 준수
    • 표현식, 문장, 주석, 연산자, 자료형, 출력 포맷 등의 실전 활용

    최종 출력은 사용자의 입력값을 바탕으로 조건문과 리스트 처리 기능을 포함한 구조화된 메시지 형태로 완성되어야 합니다.

    📄 기능 요구사항 (Functional Requirements)

    기능 번호 ...... 기능 설명 세부 설명
    FR-01 사용자 입력 수집 ............. 이름, 나이, 취미를 input()으로 입력받음
    FR-02 변수 저장 및 가공 입력값을 적절한 식별자에 저장하고, 필요 시 형 변환 수행
    FR-03 출력 포맷 구성 자기소개 카드를 f-string 기반 포맷으로 구성
    FR-04 조건 분기 처리 나이에 따라 성인/미성년자를 분기 출력
    FR-05 주석 작성 코드 흐름에 맞는 설명 주석 최소 3개 이상 작성
    FR-06 심화 기능 1 취미를 리스트로 분해 후 포맷팅 (split, strip, join)
    FR-07 심화 기능 2 내년 나이를 계산하여 출력 (+1)
    FR-08 심화 기능 3 첫 번째 취미 항목을 별도로 강조 출력
    FR은 보통 Feature Requirement(기능 요구사항)를 줄여서 쓰는 약어라, 개발 문서나 실제 회사 프로젝트에서도 저렇게 FR-01, FR-02 식으로 관리합니다.

    📄 비기능 요구사항 (Non-Functional Requirements)

    항목 세부 설명
    코드 스타일 - 식별자 규칙 준수 (키워드 사용 금지) <br>- snake_case 또는 camelCase 네이밍 컨벤션 적용
    에러방지처리 ...... 숫자 입력 오류 등으로 코드가 중단되지 않도록 int() 변환 위치 명확히 처리
    코드 가독성 - 한 줄에 너무 많은 로직 지양 <br>- 주석 / 들여쓰기 / 공백 규칙 준수
    출력 디자인 - ===== 구분선 포함 <br>- 사용자 친화적 표현 사용 <br>- f-string 기반 구조 유지

    🔀 작업 가이드

    1️⃣ 사용자 입력 처리

    • 이름, 나이, 취미 입력
    • 나이는 정수형으로 형 변환
    • 취미는 쉼표로 구분된 문자열 입력 → 리스트로 처리

    2️⃣ 데이터 가공

    • 취미 리스트 처리 (split + strip + join)
    • 내년 나이 계산 (user_age + 1)
    • 첫 번째 취미 추출 (hobby_list[0])

    3️⃣ 출력 포맷 구성

    • 출력 내용은 다음 양식을 참고하여 구성할 것:
    ===== 자기소개 카드 =====
    이름: 이은희
    나이: 25살
    취미: 독서, 여행
    
    안녕하세요, 이은희입니다.
    25살이고, 독서, 여행을 좋아합니다!
    💡 성인입니다.
    
    # 심화 미션
    💬 내년이면 25살이 됩니다!
    ⭐ 특히 좋아하는 취미는 여행입니다!
    =========================
    
    ===== 자기소개 카드 =====
    이름: 김지민
    나이: 18살
    취미: 게임, 음악 감상, 여행
    
    안녕하세요, 김지민입니다.
    18살이고, 게임, 음악 감상, 여행을 좋아합니다!
    💡 미성년자입니다.
    
    # 심화 미션
    💬 내년이면 19살이 됩니다!
    ⭐ 특히 좋아하는 취미는 게임입니다!
    =========================
    

    📚 문법 사용 체크리스트

    배운 내용 프로젝트 코드에 이렇게 녹아들어야 합니다
    표현식 (Expression) input(), user_age + 1 같은 계산식, 문자열 가공
    문장 (Statement) x = input(), print(), if 등의 "행동"
    키워드 (Keywords) if, else, def(선택 시), class는 사용 금지 확인 등
    식별자 (Identifiers) user_name, user_age 같은 올바른 변수명 작성
    주석 (Comment) 최소 3개 이상의 설명용 주석 작성
    산술 연산자 (Arithmetic Operators) 나이 입력을 숫자로 바꿔서, +, -, // 같은 계산 활용 가능
    비교 연산자 (Comparison Operators) 나이(user_age >= 20)를 비교해서 성인/미성년자 분기
    논리 연산자 (Logical Operators) 필요 시 여러 조건을 and, or로 연결 (선택 과제)
    대입 연산자 (Assignment Operators) =, += 같은 값 저장 및 갱신 작업
    자료형 (Data types) 문자열(str), 숫자(int) 적절히 구분
    print 함수 (print()) 여러 가지 포맷팅(sep, end, f-string)을 활용해서 출력

    ✅ 정답:

    # 사용자로부터 기본 정보를 입력받습니다 (문자열로 입력됨)
    user_name = input("이름을 입력하세요: ")
    user_age = input("나이를 입력하세요: ")
    user_hobby = input("취미를 입력하세요 (여러 개 입력 시 쉼표로 구분): ")
    
    # 주석: 입력받은 나이를 정수형(int)으로 변환합니다
    user_age = int(user_age)  # 문자열 -> 숫자형 변환 (표현식)
    
    # 주석: 본격적으로 자기소개 카드를 출력합니다
    print("\n===== 자기소개 카드 =====")
    print(f"이름: {user_name}")
    print(f"나이: {user_age}살")
    print(f"취미: {user_hobby}\n")
    
    print(f"안녕하세요, {user_name}입니다.")
    print(f"{user_age}살이고, {user_hobby}를 좋아합니다!")
    
    # 주석: 나이가 20살 이상이면 성인, 아니면 미성년자로 분기 처리합니다
    if user_age >= 20:  # 비교연산자 사용
        print("💡 성인입니다.")
    else:
        print("💡 미성년자입니다.")
    print("=========================")
    

    ✅ 정답: 심화 미션

    # 사용자에게 이름, 나이, 취미를 입력받습니다
    user_name = input("이름을 입력하세요: ")
    user_age = int(input("나이를 입력하세요: "))  # 숫자로 변환 (표현식)
    user_hobby = input("취미를 입력하세요 (쉼표로 구분): ")
    
    # 입력받은 취미 문자열을 리스트로 변환하고, 각 항목의 공백 제거
    hobby_list = user_hobby.split(",")  # 리스트로 쪼개기
    hobby_list = [h.strip() for h in hobby_list]  # 각 취미 앞뒤 공백 제거
    formatted_hobby = ", ".join(hobby_list)  # 다시 문자열로 조합
    
    # 내년 나이 계산 (산술 연산자 사용)
    next_year_age = user_age + 1  # 표현식 + 대입연산자
    
    # 출력
    print("\n===== 자기소개 카드 =====")
    print(f"이름: {user_name}")
    print(f"나이: {user_age}살")
    print(f"취미: {formatted_hobby}\n")
    
    print(f"안녕하세요, {user_name}입니다.")
    print(f"{user_age}살이고, {formatted_hobby}를 좋아합니다!")
    
    # 나이에 따른 분기 (비교연산자 + 논리 흐름)
    if user_age >= 20:
        print("💡 성인입니다.")
    else:
        print("💡 미성년자입니다.")  # 18살이면 이 문장 출력
    
    # 내년 나이 출력
    print(f"💬 내년이면 {next_year_age}살이 됩니다!")
    
    # 첫 번째 취미 강조
    print(f"⭐ 특히 좋아하는 취미는 {hobby_list[0]}입니다!")
    print("=========================")
    
    TOP
    preload preload